package com.muchfish.reactor.api;

import reactor.core.publisher.Flux;

public class ReactorLimitRateExample {
    public static void main(String[] args) {
        Flux<Integer> source = Flux.range(1, 1000).log();

        // 限制数据流的速率为每秒产生100个元素
        source.limitRate(100)  //一次预取100个元素； 第一次 request(100)，以后request(75) (100*75=75)
                .subscribe(
                        data -> {
                            // 模拟慢速消费者
                            try {
                                Thread.sleep(100);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                            System.out.println(data);
                        },
                        error -> System.err.println("Error: " + error),
                        () -> System.out.println("Done")
                );
    }
}
